/**
 * 音效设置工具类
 * 用于管理游戏音效和音乐的状态
 */

// 获取游戏音效状态
export function getGameSoundEnabled() {
	return uni.getStorageSync('gameSoundEnabled') !== false // 默认为开启
}

// 获取游戏音乐状态
export function getGameMusicEnabled() {
	return uni.getStorageSync('gameMusicEnabled') !== false // 默认为开启
}

// 设置游戏音效状态
export function setGameSoundEnabled(enabled) {
	uni.setStorageSync('gameSoundEnabled', enabled)
}

// 设置游戏音乐状态
export function setGameMusicEnabled(enabled) {
	uni.setStorageSync('gameMusicEnabled', enabled)
}

// 播放音效（会自动检查音效是否开启）
export function playSound(soundSrc, volume = 1) {
	// 检查游戏音效是否开启
	if (!getGameSoundEnabled()) {
		console.log('游戏音效已关闭，不播放音效')
		return null
	}

	// 创建音频上下文
	const audioContext = uni.createInnerAudioContext()
	
	// 设置音频源
	audioContext.src = soundSrc
	
	// 设置音量
	audioContext.volume = volume
	
	// 播放音频
	audioContext.play()
	
	// 播放完成后销毁音频上下文
	audioContext.onEnded(() => {
		audioContext.destroy()
	})
	
	// 错误处理
	audioContext.onError((res) => {
		console.error('音效播放失败:', res)
		audioContext.destroy()
	})
	
	return audioContext
}

// 播放背景音乐（会自动检查音乐是否开启）
export function playBackgroundMusic(musicSrc, volume = 0.5, loop = true) {
	// 检查游戏音乐是否开启
	if (!getGameMusicEnabled()) {
		console.log('游戏音乐已关闭，不播放背景音乐')
		return null
	}

	// 创建音频上下文
	const audioContext = uni.createInnerAudioContext()
	
	// 设置音频源
	audioContext.src = musicSrc
	
	// 设置音量
	audioContext.volume = volume
	
	// 设置循环播放
	audioContext.loop = loop
	
	// 播放音频
	audioContext.play()
	
	// 错误处理
	audioContext.onError((res) => {
		console.error('背景音乐播放失败:', res)
		audioContext.destroy()
	})
	
	return audioContext
}
